#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool judge(int mid, const vector<int>& a, int m) {
    int total = 0;
    int current = 0;

    for (int i = 0; i < a.size(); ++i) {
        if (a[i] - current < mid) {
            total++;
        } else {
            current = a[i];
        }
    }

    return total <= m;
}

void solve() {
    int length, numStones, maxJumps;
    cin >> length >> numStones >> maxJumps;

    vector<int> stones(numStones);
    for (int i = 0; i < numStones; ++i) {
        cin >> stones[i];
    }
    stones.push_back(length);

    sort(stones.begin(), stones.end());

    int left = 1, right = length;
    int answer = 0;

    while (left <= right) {
        int mid = (left + right) / 2;
        if (judge(mid, stones, maxJumps)) {
            answer = mid;
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }

    cout << answer;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    solve();

    return 0;
}
